
<!DOCTYPE html>
<html lang="zh-cn">

<head>
<meta charset="utf-8" />
<meta name="author" content="TianShangXing" />
<meta name="description" content="Personal blog." />
<meta name="keywords" content="blog, tech" />
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<meta name="generator" content="Hugo 0.68.3" />

<link rel="canonical" href="https://tianshangxing.gitee.io/myblog/">
<meta property="og:title" content="TianShangXing&#39;s Blog" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://tianshangxing.gitee.io/myblog/" />
<meta property="og:updated_time" content="2020-04-08T16:08:54+08:00" />

<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="TianShangXing&#39;s Blog"/>
<meta name="twitter:description" content=""/>


<meta itemprop="name" content="TianShangXing&#39;s Blog">
<meta itemprop="description" content="">

<link rel="stylesheet" href="https://tianshangxing.gitee.io/myblog/css/layout.css" />


<link rel="stylesheet" href="https://tianshangxing.gitee.io/myblog/css/default-dark.css" />




<title>


    TianShangXing&#39;s Blog

</title>

</head>


<body>
<div class="main">
<header>

<div class="header-bar">

  <nav>
    <div class="siteTitle">
      <a href="https://tianshangxing.gitee.io/myblog">TianShangXing&#39;s Blog</a>
    </div> 

    
    
    <a class="nav-item" href="https://tianshangxing.gitee.io/myblog/blog/"><div class="nav-item-title">Blogs</div></a>
    
    <a class="nav-item" href="https://tianshangxing.gitee.io/myblog/resume/"><div class="nav-item-title">Resume</div></a>
    

  </nav>

  
<div class="social-links-header">

  
  <a href="mailto:tian_shang_xing@foxmail.com"><div class="social-link">email</div></a>
  

  
  <a href="https://github.com/TianShangXing" target="_blank"><div class="social-link">gh</div></a>
  

  

  

  
  <a href="https://www.linkedin.com/in/%e6%98%9f%e4%bc%b8-%e5%88%98-b7b7321a6" target="_blank"><div class="social-link">in</div></a>
  

</div>


</div>


</header>


<main>


  
    <article class="post-preview">

  <header>
    <h2 class="title"> <a href='https://tianshangxing.gitee.io/myblog/blog/docker/'> Docker</a> </h2>
    <div class="meta">
      <div class="date">
      8 Mar, 2020 - 1 minutes
      </div>
      
<div class="tags">
  
</div>

    </div>

  </header>

  <div class="summary">
    简介 Docker 是一个开源的应用容器引擎，让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 一个完整的Docker有以下几个部分组成：
 DockerClient客户端 Docker Daemon守护进程 Docker Image镜像 DockerContainer容器  背景 软件开发最大的麻烦事之一，就是环境配置。用户计算机的环境都不相同，你怎么知道自家的软件，能在那些机器跑起来？
用户必须保证两件事：操作系统的设置，各种库和组件的安装。只有它们都正确，软件才能运行。举例来说，安装一个 Python 应用，计算机必须有 Python 引擎，还必须有各种依赖，可能还要配置环境变量。
如果某些老旧的模块与当前环境不兼容，那就麻烦了。开发者常常会说：&ldquo;它在我的机器可以跑了&rdquo;（It works on my machine），言下之意就是，其他机器很可能跑不了。
环境配置如此麻烦，换一台机器，就要重来一次，旷日费时。很多人想到，能不能从根本上解决问题，软件可以带环境安装？也就是说，安装的时候，把原始环境一模一样地复制过来。
Docker 架构 Docker 使用客户端-服务器 (C/S) 架构模式，使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
   Docker 面向对象     容器 对象   镜像 类    Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求，并处理这些请求（创建、运行、分发容器）。 客户端和服务端既可以运行在一个机器上，也可通过 socket 或者RESTful API 来进行通信。
Docker daemon 一般在宿主主机后台运行，等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令，用户用这些命令实现跟 Docker daemon 交互。
  </div>

  <div class="rmore">
    <a href='https://tianshangxing.gitee.io/myblog/blog/docker/' class="rmore">Read more</a>
  </div>


</article>


    <article class="post-preview">

  <header>
    <h2 class="title"> <a href='https://tianshangxing.gitee.io/myblog/blog/git%E5%91%BD%E4%BB%A4%E6%80%BB%E7%BB%93/'> Git命令总结</a> </h2>
    <div class="meta">
      <div class="date">
      15 Feb, 2020 - 1 minutes
      </div>
      
<div class="tags">
  
</div>

    </div>

  </header>

  <div class="summary">
    Git命令操作 0.1.git init # 初始化 0.2.git remote add origin url地址 # 关联远程仓库 1.git status # 查看状态 2.git add -A # 添加文件 3.git commit -m '备注信息' # 提交修改 4.git push -u origin master # 推送此次修改 # git 3连 1.git add -A # 添加新文件 2.git commit -m '备注信息' # 提交修改 3.git push # 推送此次修改 清空密码 git config --system --unset credential.helper 保存密码 git config --global credential.helper store 拉取代码 git pull origin master 没有add 回退 git checkout .
  </div>

  <div class="rmore">
    <a href='https://tianshangxing.gitee.io/myblog/blog/git%E5%91%BD%E4%BB%A4%E6%80%BB%E7%BB%93/' class="rmore">Read more</a>
  </div>


</article>


    <article class="post-preview">

  <header>
    <h2 class="title"> <a href='https://tianshangxing.gitee.io/myblog/blog/markdown%E8%AF%AD%E6%B3%95/'> Markdown语法</a> </h2>
    <div class="meta">
      <div class="date">
      20 Jan, 2020 - 1 minutes
      </div>
      
<div class="tags">
  
</div>

    </div>

  </header>

  <div class="summary">
    Markdown是一种可以使用普通文本编辑器编写的标记语言，通过简单的标记语法，它可以使普通文本内容具有一定的格式。它允许人们使用易读易写的纯文本格式编写文档，然后转换成格式丰富的HTML页面，Markdown文件的后缀名便是“.md”
标题H1 # 标题H2 ## 标题H3 ### 标题H4 #### 标题H5 ###### 分割线 --- / *** 引述 &gt; 单行代码 ` ` 代码块 ``` ``` 加粗文字 ** ** / `ctrl + B` 倾斜文字 * * / _ _ / `CTRL + I` 倾斜加粗 *** *** 删除线 ~~ ~~ 上标 X&lt;sub&gt;2&lt;/sub&gt; 下标 O&lt;sup&gt;2&lt;/sup&gt; 图片 ![图片alt](图片地址 ''图片title'') 图片alt就是显示在图片下面的文字，相当于对图片内容的解释。 图片title是图片的标题，当鼠标移到图片上时显示的内容。title可加可不加 锚点与链接 Links [普通链接](http://localhost/) [普通链接带标题](http://localhost/ &quot;普通链接带标题&quot;) 直接链接：&lt;https://github.com&gt; [锚点链接][anchor-id] [anchor-id]: http://www.this-anchor-link.com/ GFM a-tail link @pandao &gt; @pandao 无序列表（减号）Unordered Lists (-) - 列表一 - 列表二 - 列表三 无序列表（星号）Unordered Lists (*) * 列表一 * 列表二 * 列表三 无序列表（加号和嵌套）Unordered Lists (+) + 列表一 + 列表二 + 列表二-1 + 列表二-2 + 列表二-3 + 列表三 * 列表一 * 列表二 * 列表三 有序列表 Ordered Lists (-) 1.
  </div>

  <div class="rmore">
    <a href='https://tianshangxing.gitee.io/myblog/blog/markdown%E8%AF%AD%E6%B3%95/' class="rmore">Read more</a>
  </div>


</article>


    <article class="post-preview">

  <header>
    <h2 class="title"> <a href='https://tianshangxing.gitee.io/myblog/blog/hugo/'> 利用基于Go Lang的Hugo来打造属于自己的纯静态博客系统</a> </h2>
    <div class="meta">
      <div class="date">
      3 Jan, 2020 - 2 minutes
      </div>
      
<div class="tags">
  
</div>

    </div>

  </header>

  <div class="summary">
    Go lang无疑是目前的当红炸子鸡，极大地提高了后端编程的效率，同时有着极高的性能。借助Go语言我们 可以用同步的方式写出高并发的服务端软件，同时，Go语言也是云原生第一语言，Docker，Kubernetes等等著名的项目都是使用Go语言实现的。
Hugo 是基于 Go 语言的静态网站生成器。
什么是静态网站生成器？顾名思义，就是以最快的速度生成一个高可用的web页面，我们知道Django作为一款非常流行的框架被广泛应用，但是部署起来实在是太麻烦了，各种命令各种配置，动态页面必然要涉及数据库的配置和操作，另外只要涉及数据库操作，你就不得不考虑sql注入等一系列的安全因素。而纯静态页面则没有这个烦恼，如果我们只需要一个简单的站点，一些简单的功能和页面，比如博客，我们只想以极简的方式用markdown语法写下文字或者代码，让服务器访问纯静态页面，这就是静态网站生成器可以提供给我们的好处。
为啥选择Hugo?
Hugo是一种go语言编写的静态网站生成器。适用于搭建个人blog、公司主页、help等网站，是一种小型的CMS系统。静态站点的好处就是快速、安全、易于部署，方便管理。
Hugo的优点包含但不限于：
得益于Go的高性能，性能很快 世界上最快的静态网站生成工具，5秒生成6000个页面 文档为Markdown格式,语法超简单 Hugo 可以做静态文件生成工具，还是高性能web 服务； 丰富的站点迁移工具，可以将wordpress，Ghost，Jekyll，DokuWiki，Blogger轻松迁移至 Hugo 超详细的文档 活跃的社区 更加自由的内容组织方式 丰富的主题模板，可以让你的网站更加炫目多彩 多环境支持：macos ，linux，windows
首先，可以去go的官网网站下载安装包 https://golang.org/dl/ 然后直接双击安装即可，不需要配置环境变量，因为安装过程自动配置，安装完毕后，打开命令行，输入
go version 显示主版本号即表示hugo安装成功
然后，可以进行hugo的在线源码编译安装，打开命令行，输入下面的命令
go get -u -v github.com/spf13/hugo go build -o hugo main.go mv hugo $GOPATH/bin 如果你不想在线编译安装，也可以去hugo的官网 https://github.com/gohugoio/hugo/releases 下载稳定版的压缩包，解压之后环境变量也自动帮您配好
装完以后，在命令行内输入
hugo version 打印出版本号即表示hugo安装成功
在命令行中输入命令
hugo new site hugo_blog 就生成了一个名字为hugo_blog的新站点，可以感受到速度非常快，和vue.js创建新站点的速度比起来简直天差地别
打开配置文件config.toml，这是hugo的站点的相关配置，可以进行一些个性化的定制，改为下面这样：
baseurl = &quot;/&quot; title = &quot;My site.&quot; copyright = &quot;Copyright (c) 2017, all rights reserved.
  </div>

  <div class="rmore">
    <a href='https://tianshangxing.gitee.io/myblog/blog/hugo/' class="rmore">Read more</a>
  </div>


</article>


    <article class="post-preview">

  <header>
    <h2 class="title"> <a href='https://tianshangxing.gitee.io/myblog/blog/get%E5%92%8Cpost%E7%9A%84%E5%8C%BA%E5%88%AB/'> Get和Post的区别</a> </h2>
    <div class="meta">
      <div class="date">
      29 Dec, 2019 - 1 minutes
      </div>
      
<div class="tags">
  
</div>

    </div>

  </header>

  <div class="summary">
    Get和Post的具体区别 一般区别：   post更安全（不会作为url的一部分，不会被缓存、保存在服务器日志、以及浏览器浏览记录中）
  post发送的数据更大（get有url长度限制）
  post能发送更多的数据类型（get只能发送ASCII字符）
  post比get慢
  post用于修改和写入数据，get一般用于搜索排序和筛选之类的操作（淘宝，支付宝的搜索查询都是get提交），目的是资源的获取，读取数据
  虽然在开发中经常用get或者post请求，但是由于我们资历经验的欠缺，或许就重来没有深究过什么场合用get请求，什么场合用post请求，我相信不止我一个人当看到第4,5条的时候，就会明白为什么面试官对我们的回答不满意，也明白了自己对get或post用法理解的欠缺，那么get比post更快，究竟快多少呢？表现在那些方面？
一、为什么get比post更快  post请求包含更多的请求头  因为post需要在请求的body部分包含数据，所以会多了几个数据描述部分的首部字段（如：content-type）,这其实是微乎其微的。
最重要的一条，post在真正接收数据之前会先将请求头发送给服务器进行确认，然后才真正发送数据  post请求的过程：   浏览器请求tcp连接（第一次握手）
  服务器答应进行tcp连接（第二次握手）
  浏览器确认，并发送post请求头（第三次握手，这个报文比较小，所以http会在此时进行第一次数据发送）
  服务器返回100 Continue响应
  浏览器发送数据
  服务器返回200 OK响应
  get请求的过程：   浏览器请求tcp连接（第一次握手）
  服务器答应进行tcp连接（第二次握手）
  浏览器确认，并发送get请求头和数据（第三次握手，这个报文比较小，所以http会在此时进行第一次数据发送）
  服务器返回200 OK响应
  也就是说，目测get的总耗是post的2/3左右，这个口说无凭，网上已经有网友进行过测试。
get会将数据缓存起来，而post不会  可以做个简短的测试，使用ajax采用get方式请求静态数据（比如html页面，图片）的时候，如果两次传输的数据相同，第二次以后消耗的时间将会在10ms以内（chrome测试），而post每次消耗的时间都差不多。经测试，chrome和firefox下如果检测到get请求的是静态资源，则会缓存，如果是数据，则不会缓存，但是IE什么都会缓存起来，当然，应该没有人用post去获取静态数据吧，反正我是没见过。
  </div>

  <div class="rmore">
    <a href='https://tianshangxing.gitee.io/myblog/blog/get%E5%92%8Cpost%E7%9A%84%E5%8C%BA%E5%88%AB/' class="rmore">Read more</a>
  </div>


</article>




<div class="page-nav">
  <div class="page-prev">
    
        <a href="https://tianshangxing.gitee.io/myblog/page/3/" title="Previous page" > &lt;&lt; </a>
    
  </div> 

  <div class="page-num">
    4/5
  </div> 

  <div class="page-next">
    
    <a href="https://tianshangxing.gitee.io/myblog/page/5/" title="Next page"> >> </a>
    
  </div> 
</div> 


</main>

  <footer>

  <div class="social-links-footer">

  
  <a href="mailto:tian_shang_xing@foxmail.com"><div class="social-link">Email</div></a>
  

  
  <a href="https://github.com/TianShangXing" target="_blank"><div class="social-link">GitHub</div></a>
  

  

  

  
  <a href="https://www.linkedin.com/in/%e6%98%9f%e4%bc%b8-%e5%88%98-b7b7321a6" target="_blank"><div class="social-link">LinkedIn</div></a>
  

  <div class="social-link">
  <a href="https://tianshangxing.gitee.io/myblog/index.xml" target="_blank">RSS</a>
  </div>

</div>


  <div class="copyright"> Copyright (c) 2020, all rights reserved. </div>

  <div class="poweredby">
    Powered by <a href="https://gohugo.io/">Hugo</a>.
  </div>

  </footer>

</div> 

</body>
</html>

